package org.lanyu.springainovel.common.service;

import org.lanyu.springainovel.common.entity.User;
import org.springframework.security.core.userdetails.UserDetailsService;

import java.util.List;

/**
 * 用户服务接口
 */
public interface UserService extends UserDetailsService {

    /**
     * 创建用户
     *
     * @param user 用户信息
     * @return 创建结果
     */
    boolean createUser(User user);
    
    /**
     * 更新用户
     *
     * @param user 用户信息
     * @return 更新结果
     */
    boolean updateUser(User user);
    
    /**
     * 更新当前用户信息
     *
     * @param user 用户信息
     * @return 更新后的用户信息
     */
    User updateUserInfo(User user);
    
    /**
     * 修改密码
     *
     * @param currentPassword 当前密码
     * @param newPassword 新密�?     * @return 修改结果
     */
    boolean changePassword(String currentPassword, String newPassword);
    
    /**
     * 删除用户
     *
     * @param id 用户ID
     * @return 删除结果
     */
    boolean deleteUser(Long id);
    
    /**
     * 根据用户名查询用�?     *
     * @param username 用户�?     * @return 用户信息
     */
    User getUserByUsername(String username);
    
    /**
     * 根据ID查询用户
     *
     * @param id 用户ID
     * @return 用户信息
     */
    User getUserById(Long id);
    
    /**
     * 获取默认用户ID
     * 在没有登录系统的情况下，返回默认用户ID
     * @return 默认用户ID
     */
    Long getDefaultUserId();
    
    /**
     * 获取当前登录用户
     *
     * @return 用户信息
     */
    User getCurrentUser();
    
    /**
     * 获取用户列表
     *
     * @return 用户列表
     */
    List<User> getUserList();
    
    /**
     * 根据用户名加载用户详�?     * 用于Spring Security认证
     *
     * @param username 用户�?     * @return 用户详情对象
     * @throws org.springframework.security.core.userdetails.UsernameNotFoundException 用户不存在时抛出
     */
    org.springframework.security.core.userdetails.UserDetails loadUserByUsername(String username) throws org.springframework.security.core.userdetails.UsernameNotFoundException;
}
